package com.example.hzly.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

@Data
public class DestinationDTO {
    private Long id;
    private String name;
    private String subtitle;
    private String description;
    private String location;
    private String region;
    private String type;
    private String bestSeason;
    private BigDecimal rating;
    private Integer visits;
    private String imageUrl;
    private List<String> coverImages;
    private List<String> gallery;
    private Boolean isHot;
    private StatsDTO stats;
    private List<String> badges;
    private List<HighlightDTO> highlights;
    private WeatherInfoDTO weatherInfo;
    private TrafficInfoDTO trafficInfo;
    private String altitude;
    private String climate;
    private String bestTimeToVisit;
    private String averagePrice;
    private TransportationInfoDTO transportationInfo;
    private List<RestaurantDTO> restaurants;
    private List<AccommodationDTO> accommodations;
    private List<ActivityDTO> activities;
    private List<PhotographySpotDTO> photographySpots;
    
    @Data
    public static class StatsDTO {
        private Integer visitCount;
        private Integer reviewCount;
        private Integer favoriteCount;
    }
    
    @Data
    public static class HighlightDTO {
        private String title;
        private String description;
        private String image;
    }
    
    @Data
    public static class WeatherInfoDTO {
        private CurrentWeatherDTO current;
        private List<ForecastDTO> forecast;
        
        @Data
        public static class CurrentWeatherDTO {
            private Integer temp;
            private Integer tempMin;
            private Integer tempMax;
            private String weather;
            private Integer humidity;
            private String uvIndex;
            private String airQuality;
        }
        
        @Data
        public static class ForecastDTO {
            private String date;
            private String weather;
            private Integer tempMin;
            private Integer tempMax;
        }
    }
    
    @Data
    public static class TrafficInfoDTO {
        private String selfDriving;
        private String publicTransport;
    }
    
    @Data
    public static class TransportationInfoDTO {
        private String car;
        private String plane;
        private String bus;
    }
    
    @Data
    public static class RestaurantDTO {
        private String name;
        private String cuisine;
        private Double rating;
        private List<String> signature;
    }
    
    @Data
    public static class AccommodationDTO {
        private String name;
        private String type;
        private Double rating;
        private String price;
        private List<String> features;
    }
    
    @Data
    public static class ActivityDTO {
        private String name;
        private String duration;
        private String difficulty;
        private String bestTime;
        private String description;
    }
    
    @Data
    public static class PhotographySpotDTO {
        private String name;
        private String bestTime;
        private String type;
        private String tips;
    }
}